import "@wangeditor/editor/dist/css/style.css";
import { createEditor, createToolbar } from "@wangeditor/editor";
import { baseURL } from "@/axios/axios-http.js";

class Editor {
    //成员变量声明
    content = [];
    editorConfig = null;
    editor = null;
    toolbar = null;

    init() {
        //富文本编辑器初始化
        this.initEditorConfig();
        this.initEditor();
        this.initToolBar();
    }

    //该函数应用于初始化父文本（ 包含工具栏， 编辑区， 编辑内容）
    initAll(strContent) {
            this.content = strContent;
            this.initEditorConfig();
            this.initEditor();
            this.initToolBar();
        }
        //该函数用于初始化父文本，但是不初始化工具栏
    initContent(strContent, disable) {
        //转入笔记内容，直接赋值到该类的content成员变量上
        this.content = strContent;
        //富文本编辑器初始化
        this.initEditorConfig();
        this.initEditor();
        //调用insertNote()函数，插入富文本内容
        //编辑内容是否显示光饼（是否可以编辑）
        if (disable) {
            //禁用富文本区域的编辑功能
            this.editor.disable();
        }

    }

    //初始化编辑器配置
    initEditorConfig() {
        //this绑定默认当前类对象，为了防止this绑定丢失，给this重新赋值
        var that = this
        that.editorConfig = {
            placeholder: "请输入笔记内容",
            scroll: false, // 禁止编辑器滚动
            onChange(editor) { //每当编辑区域的内容变化时，该函数都会执行
                //是文章JSON数组格式的文本
                that.content = editor.children;
            },
            //工具栏配置
            MENU_CONF: {
                //配置上传图片
                uploadImage: {
                    server: baseURL + "/api/upload",
                    fieldName: "file",
                    //该函数会在图片上传完成后触发，
                    customInsert(response, insertFn) {
                        if (response.code == 200) {
                            insertFn(response.data, "", "");
                        } else {
                            alert("图片上传失败");
                        }
                    },
                },
            },
        };
    }

    //创建文本编辑区editor
    initEditor() {
        //该变量用于初始化富文本的初始内容
        let editorContent = [];
        if (this.content.length != 0) {
            editorContent = JSON.parse(this.content)
        }
        this.editor = createEditor({
            selector: "#editor-container", //把id=editor-container的HTML元素作为编辑区
            content: editorContent, //编辑区域的默认内容
            config: this.editorConfig, //传入编辑区的配置
        });
    }


    // 工具栏
    initToolBar() {
        this.toolbar = createToolbar({ //
            editor: this.editor, //需要传入编辑器变量
            selector: "#editor-toolbar",
            config: { //排除全屏按钮
                excludeKeys: "fullScreen",
            },
        });
    }

    //从富文本内容中读取笔记内容：全部内容都认定为是笔记内容
    getNoteIntro() {
        return this.content[0].children[0].text;
    }

    getNoteContent() {
        //把jOSN对象转换成字符串
        return this.stringify(this.content);
    }

}


export default Editor;